The development of data storage systems has played a major role in the exponential growth of computer technologies. However, the stored data in a data storage system can become corrupted, and errors can be introduced to the stored data, due to various reasons. For example, some of the electronic components of the data storage system may fail due to manufacturing defects, aging, etc. Moreover, external events, such as a fire catastrophe, may cause physical damage to the data storage system including the electronic components that store the data. All of these can lead to corruption of data stored in the system.
There are a number of mechanisms available to mitigate the risk of data corruption. First, the data storage system can encode the data to be stored into code words. The code words may include the information carried by the data, as well as error-correction information, and the code words can be stored in lieu of (or together with) the data. After receiving a request for the stored data, the data storage system can decode the code words to provide the stored data. In the event that the stored code words are corrupted due to component failure, the data storage system can also decode the corrupted code words using the error-correction information to generate the requested data. Moreover, the data storage system can also distribute the stored data among a set of storage devices into a data stripe that includes redundancy information. When one or more of the set of storage devices fails, leading to corruption of some of the data of a data stripe, the data storage system can use uncorrupted data of the data stripe, as well as the redundancy information, to recover the lost data. Further, the data storage system may also store replicas of the data in other storage devices, and can provide the replica data in response to the data request.
A data storage system capable of providing reliable and fast access to the stored data can improve the reliability and efficiency of the computing and networking devices that use the data storage system. With the recent advances in various areas of computing and networking technologies (e.g., big data processing, cloud computing, etc.), there is a need for a data storage system that provides not only reliable storage for a gigantic amount of data, but also fast access to that data, even if the stored data is corrupted and needs to be corrected.